package practice;

/**
 * 第二天练习
 */
public class Day2 {

    /**
     * 1.判断是否为子序列
     * eg："ace"是"abcde"的一个子序列，而"aec"不是
     */
    public boolean isSubsequence(String s, String t) {
        if(s.length() == 0) {
            return true;
        }
        int left1 = 0;
        int left2 = 0;
        while(left1 < t.length()) {
            if(left2 >= s.length()) {
                return true;
            }
            if(s.charAt(left2) == t.charAt(left1)) {
                left1++;
                left2++;
            }else {
                left1++;
            }
        }
        if(left2 >= s.length()) {
            return true;
        }
        return false;
    }
    /**
     * 2.计算两数之和（有序数组）
     * 输入：numbers = [2,7,11,15], target = 9
     * 输出：[1,2]
     * 解释：2 与 7 之和等于目标数 9 。因此 index1 = 1, index2 = 2 。返回 [1, 2] 。
     */
    public int[] twoSum(int[] numbers, int target) {
        int[] ret = new int[2];
        int left = 0;
        int right = numbers.length - 1;
        int sum = numbers[left] + numbers[right];
        while(left < right) {
            if(sum > target) {
                sum -= numbers[right--];
                sum += numbers[right];
            }else if(sum < target) {
                sum -= numbers[left++];
                sum += numbers[left];
            }else {
                ret[0] = left + 1;
                ret[1] = right + 1;
                break;
            }
        }
        return ret;
    }
}
